In a computing environment, and more particularly a software development environment, a “bug” refers to any unwanted performance or behavior of a software application or program. Most often, when a bug is encountered, some form of analysis and subsequent “debugging” is usually in order. This analysis and subsequent “de-bugging” is most often a very time consuming and labor intensive task.
A software bug can refer to any fault in a computer program. For example, a bug that crashes the program is sometimes referred to as a “hard” bug. On the other hand, bugs often arise which do not typically prevent the program from performing a specified task. Rather, these types of bugs merely affect the operating characteristics of the software or computer program. As such, this category of bugs can be referred to as “soft” bugs. Probably the most severe product defects are asserts and crashes, which can also account for more than half of the defects found during product development cycle.
An assertion refers to a software programming construct that can verify the validity of an expression. In other words, programmers often employ assertions to simplify the de-bugging process as they are written to always evaluate in the affirmative (e.g., true). As such, when an assertion is found to be negative (e.g., false), the programmer can conclude an existence of a bug in the program. These situations are most often referred to as “assertion failures.” A crash refers to a condition whereby a software product halts performance or performs in a less than expected manner.
In software development, testing is an integral part of quality control. For example, regression testing can refer to software testing in an effort to identify regression bugs. In other words, regression testing is employed to de-bug software that, for one reason or another, no longer functions properly. Most often, these types of bugs occur as an unintended consequence of program modifications. Regression testing frequently includes repeating previously run tests to determine if any previously addressed faults reoccur.